package autotest_util

import (
	json_util "app/app_src/framework/util/json"
	"net/url"
)

// 转换 JSON 字符串成映射
func ConvertJsonStringToMap(jsonStr string) map[string]any {
	if jsonStr == "" {
		return make(map[string]any, 0)
	}

	result := json_util.FromStringAsMap(jsonStr)

	return result
}

// 转换成 JSON 字符串
func ConvertObjToJsonString(obj any) string {
	if obj == nil {
		return "{}"
	}

	// 转换成字符串
	jsonStr := json_util.ToString(obj)

	return jsonStr
}

// 转换映射成 URL 参数
func ConvertMapToUrlParams(obj map[string]any) string {
	if obj == nil {
		return ""
	}

	urlValues := url.Values{}

	for key := range obj {
		valueStr := obj[key].(string)
		urlValues.Add(key, valueStr)
	}

	// 转换成 url 字符串
	urlParams := urlValues.Encode()

	return urlParams
}

// 转换成 URL 参数
func ConvertObjToUrlParams(obj any) string {
	if obj == nil {
		return ""
	}

	pairs, ok := obj.(map[string]any)

	if !ok {
		// 通过先序列化成 JSON 字符串后再反序列成 map 对象,
		// 来实现对象转换成 map 对象的功能
		jsonStr := ConvertObjToJsonString(obj)
		pairs = ConvertJsonStringToMap(jsonStr)
	}

	return ConvertMapToUrlParams(pairs)
}
